package hr_project.hr.web;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import hr_project.hr.biz.Resumes.IResultBiz;
import hr_project.hr.biz.Resumes.IResumesBiz;
import hr_project.hr.entity.Emp;
import hr_project.hr.entity.Result;
import hr_project.hr.entity.Resumes;
import hr_project.hr.util.pagebean;

@Controller
@RequestMapping("/resumes")
public class ResumesAction {

	@Autowired
	private IResumesBiz biz;
	@Autowired
	private IResultBiz rbiz;
	
	

	public IResultBiz getRbiz() {
		return rbiz;
	}

	public void setRbiz(IResultBiz rbiz) {
		this.rbiz = rbiz;
	}

	public IResumesBiz getBiz() {
		return biz;
	}

	public void setBiz(IResumesBiz biz) {
		this.biz = biz;
	}
	
	@RequestMapping("/list")
	@ResponseBody
	public pagebean getlist(String re_name,String status,@RequestParam(defaultValue="1")int page){
		System.out.println("状态"+status);
		System.out.println("名字"+re_name);
		return biz.getAll(page, re_name, status);
	}
	
	//简历的文件下载
	@RequestMapping("download")
	public void downxx(String filename,HttpServletRequest req,HttpServletResponse res)
	{
		/*System.out.println(filename);*/
		//找到能下载文件的文件夹必须是根路径
		String path=req.getServletContext().getRealPath("/");
		//将文件的整个路径组织出来
		File file=new File(path+"/"+filename);
		//判断项目中是否有这个文件
		//System.out.println(file);
		if(file.exists())
		{
			//下载，设置响应类型
			res.setContentType("application/octet-stream");
			//设置响应头
			String header="attachment;";
			header += " filename=\"" + encodeFileName(filename) +"\";";
			header += " filename*=utf-8''" + encodeFileName(filename);
			res.addHeader("Content-Disposition", header);
			//创建一个读入流
			InputStream is=null;
			//创建一个写出流
			OutputStream os=null;
			
			try {
				//将找到的这个文件读成流
				   is=new FileInputStream(file);
				   //根据响应获得写的流
				   os=res.getOutputStream();
				   //创建一个字节数组
				   byte[] arr=new byte[100];
				   int length=0;
				   //当读取到的长度为-1时，为读完了
				   while((length=is.read(arr))!=-1)
				   {
					   //读多少写多少
					   os.write(arr, 0, length);
				   }
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			finally{
					try {
						
						if(is!=null) is.close();
						if(os!=null) os.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
			}
		}
		else{
			throw new NullPointerException();
		}
	}
//将中文转换成utf-8格式
	private String encodeFileName(String name) {
		// TODO Auto-generated method stub
		try {
		    return URLEncoder.encode(name, "UTF-8").replaceAll("\\+", "%20");
		  } catch (UnsupportedEncodingException e) {
		    e.printStackTrace();
		    return null;
		  }
	}
	
	
	
	/**
	 * 审核简历
	 * 0--淘汰
	 * 1--通过
	 * 简历表改状态，审核记录表也要插入数据
	 * rs_id ;//招聘结果编号
	 * re_id ;//简历编号
	 * rs_type ;//筛选类型
	 * rs_emp  ;//筛选人
	 * rs_time;//筛选时间
	 * rs_result;//筛选结果
	 * */
	@RequestMapping("/mod")
	public String mod(int n,long id,HttpSession sess){
		//获得审核人
		Emp ee=(Emp)sess.getAttribute("loger");
		//创建结果对象
		Result resu=new Result();
		//获得简历对象
		Resumes res=biz.getByid(id);
		//获得简历当前类型
		String status=res.getRe_status();
		//设置简历结果的时间
		resu.setRs_time(new Date());
		//设置简历结果的简历id
		resu.setRe_id(res);
		//设置简历结果的审核人
		resu.setRs_emp(ee);
		if(n==0){
			//设置审核简历结果
			resu.setRs_result("淘汰");
			//修改简历状态
			res.setRe_status("淘汰");
			//设置结果简历类型
			if(status.equals("新增")){
				resu.setRs_type("筛选");
			}
			if(status.equals("待笔试")){
				resu.setRs_type("笔试");
			}
			if(status.equals("待面试")){
				resu.setRs_type("面试");
			}
			
		}
		else{
			if(status.equals("新增")){
				resu.setRs_type("筛选");
				res.setRe_status("待笔试");
			}
			if(status.equals("待笔试")){
				res.setRe_status("待面试");
				resu.setRs_type("笔试");
			}
			if(status.equals("待面试")){
				res.setRe_status("录用");
				resu.setRs_type("面试");
			}
			resu.setRs_result("通过");
		}
		rbiz.addresult(resu);
		biz.updatestatus(res);
		//跳转页面
		if(status.equals("新增")){
			return "resume-list";
		}
		else if(status.equals("待笔试")){
			return "resume-writer-list";
		}
		else{
			return "resume-face-list";
		}
	}

	@RequestMapping("/getAll")
	@ResponseBody
	public List<Resumes> getAll(){
		return biz.getAll();
	}	
	
	
}
